#include "SQLCurrentOfCursorExpr.h"
#include "../../visitor/SQLASTVisitor.h"
#include <sstream>

SQLCurrentOfCursorExpr::SQLCurrentOfCursorExpr()
{
}

SQLCurrentOfCursorExpr::~SQLCurrentOfCursorExpr()
{
  //   if (cursorName != NULL)
  //   {
  //     // delete cursorName;
  //     cursorName = NULL;
  //   }
}
SQLCurrentOfCursorExpr::SQLCurrentOfCursorExpr(SQLName_ptr theCursorName)
{
  cursorName = theCursorName;
}

SQLName_ptr SQLCurrentOfCursorExpr::getCursorName()
{
  return cursorName;
}

void SQLCurrentOfCursorExpr::setCursorName(SQLName_ptr theCursorName)
{
  cursorName = theCursorName;
}

void SQLCurrentOfCursorExpr::output(std::stringstream *buf)
{
  // buf.append("CURRENT OF ");
  (*buf) << "CURRENT OF ";
  cursorName->output(buf);
}

void SQLCurrentOfCursorExpr::accept0(SQLASTVisitor_ptr visitor)
{
  if (visitor->visit(SharedObject(SQLCurrentOfCursorExpr)))
  {
    acceptChild(visitor, cursorName);
  }
  visitor->endVisit(SharedObject(SQLCurrentOfCursorExpr));
}

// int SQLCurrentOfCursorExpr::hashCode() {
// final int prime = 31;
// int result = 1;
// result = prime * result + ((cursorName == NULL) ? 0 : cursorName.hashCode());
// return result;
//}

// BOOL_ptr SQLCurrentOfCursorExpr::equals(Object obj) {
// if (this == obj) {
// return BOOL::TRUE;
//}
// if (obj == NULL) {
// return BOOL::FALSE;
//}
// if (getClass() != obj.getClass()) {
// return BOOL::FALSE;
//}
// SQLCurrentOfCursorExpr other = (SQLCurrentOfCursorExpr) obj;
// if (cursorName == NULL) {
// if (other.cursorName != NULL) {
// return BOOL::FALSE;
//}
//} else if (!cursorName.equals(other.cursorName)) {
// return BOOL::FALSE;
//}
// return BOOL::TRUE;
//}
